#!/usr/bin/env python3
"""
K8s资源信息提取器
提取K8s资源配置并生成Markdown文档
"""

import os
import sys
import argparse
from pathlib import Path
from src.core.processor import FileProcessor
from src.config.manager import ConfigManager
from src.logger.logger import setup_logging

# 定义BASE_DIR为项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent

def main():
    """主函数，程序入口"""
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='K8s资源信息提取器')
    parser.add_argument('-s', '--source', default='sources', help='源YAML/JSON文件目录')
    parser.add_argument('-o', '--output', default='outputs', help='输出Markdown文件目录')
    parser.add_argument('-c', '--config', default='config.yaml', help='配置文件路径')
    parser.add_argument('-v', '--verbose', action='store_true', help='输出详细日志')
    args = parser.parse_args()
    
    # 确保路径是绝对路径，基于BASE_DIR
    source_dir = (BASE_DIR / args.source).resolve()
    output_dir = (BASE_DIR / args.output).resolve()
    config_path = (BASE_DIR / args.config).resolve()
    
    # 设置日志级别
    log_config = {
        'level': 'debug' if args.verbose else 'info'
    }
    logger = setup_logging(log_config).get_logger()
    
    try:
        logger.info("K8s资源信息提取器启动")
        
        # 加载配置
        logger.info(f"加载配置文件: {config_path}")
        config_manager = ConfigManager(config_path)
        
        # 检查源目录
        if not os.path.exists(source_dir):
            logger.error(f"源目录不存在: {source_dir}")
            print(f"错误: 源目录不存在: {source_dir}")
            return 1
        
        # 初始化处理器
        processor = FileProcessor(
            source_dir=str(source_dir),
            output_dir=str(output_dir),
            config_manager=config_manager,
            logger=logger
        )
        
        # 处理文件
        logger.info(f"开始处理目录: {source_dir}")
        processor.process_directory()
        
        logger.info("处理完成")
        print(f"处理完成，输出目录: {output_dir}")
        return 0
        
    except Exception as e:
        logger.critical(f"程序执行失败: {str(e)}", exc_info=True)
        print(f"错误: {str(e)}")
        return 1

if __name__ == "__main__":
    sys.exit(main()) 